home *** CD-ROM | disk | FTP | other *** search
- From: Kay Roemer <roemer@informatik.uni-frankfurt.de>
- Posted-Date: Wed, 20 Apr 94 8:27:23 MESZ
- Received-Date: Wed, 20 Apr 94 08:27:24 +0200
- Message-Id: <9404200627.AA07875@hera.rbi.informatik.uni-frankfurt.de>
- Subject: Re: sending signals from xdd's
- To: howard@harry.lloyd.com (Howard Chu)
- Date: Wed, 20 Apr 94 8:27:23 MESZ
- In-Reply-To: <m0ptPkd-000ERuC@lloyd.com>; from "Howard Chu" at Apr 19, 94 5:02 pm
- Mailer: Elm [revision: 70.85]
-
-
- Howard writes:
-
- > Instead of requiring another thread, you could just install your own handler
- > in the vbl queue. Or perhaps we can add a queue internal to MiNT that's
- > processed at regular intervals. In either case you need to be able to call
- > post_sig in order for it to be useful. My patch to make Fselect work on the
- > standard BIOS serial ports just checks each port's buffers during vbl
- > processing and then calls wakeup or wakeselect as required. I suppose I could
- > also have implemented SIGIO there at the same time...
- >
- > I guess a standard queue would be nice, have every driver that uses it set up
- > 2 flags (e.g. read_ready and write_ready) that cause appropriate wakeup calls
- > to be made. We could even implement the Exceptional conditions for select.
- >
-
- When addroottimeout() is included into Mint, such a queue need not be
- implemented, because it is then already there -- the timeout delta list.
- All what is needed to do to wake processes on input and send signals when
- post_sig() is in struct kerinfo, is the following:
-
- static int pending = 0;
-
- void
- wakeme (long proc)
- {
- pending = 0;
- wakeselect (`the process');
- wake (IO_Q, (long)`wait cond');
- kerinfo->post_sig (...);
- }
-
- and to do the following at interrupt time when input arrives (probably
- at spl7):
-
- if (!pending) {
- pending = 1;
- addroottimeout (0, wakeme, 1);
- }
-
- Kay.
-